<?php

declare(strict_types=1);

// 开启严格模式
error_reporting(E_ALL);

// 在开发环境中开启，在生产环境中应关闭并记录日志
ini_set('display_errors', '1');

// 强制 session 仅使用 cookie，并设置 HttpOnly 标志防止 JS 访问
ini_set('session.use_only_cookies', '1');
session_set_cookie_params([
    'lifetime' => 3600,
    'path'     => '/',
    'domain'   => '',       // 根据你的域名设置
    'secure'   => true,     // 仅在 HTTPS 下发送
    'httponly' => true,     // JS 无法访问
    'samesite' => 'Strict'  // 防御 CSRF
]);

// Start session for CSRF and auth
session_start([
    'cookie_httponly' => true,
    // 'cookie_secure'   => true,   // Requires HTTPS
    'use_strict_mode' => true,
]);

// 路径常量
define('ROOT_PATH', dirname(__DIR__));
define('APP_PATH', ROOT_PATH . '/app');
define('PUBLIC_PATH', ROOT_PATH . '/public');

// --- 加载 Composer 自动加载器 ---
require_once ROOT_PATH . '/vendor/autoload.php';

use core\Router;
use core\Request;
use app\middleware\LogRequest;



// Flush logs on shutdown
register_shutdown_function([LogRequest::class, 'flush']);

// Initialize and dispatch
$request = new Request();
(new Router($request))->dispatch();